/*
 * Copyright (c) 2009 Sylvestre Gallon <syl@pmbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#import <Foundation/NSObject.h>
#import "stdarg.h"

enum log_level {
	LOG_ERR,
	LOG_WARN,
	LOG_INFO,
	LOG_DEBUG
};

/* 
 *config singleton must exist before the initialisation of logger
 */

@interface logger: NSObject {
	FILE *fd;
}

+ (id) instance;
- (void) logWithLevel: (uint8_t) level andFile: (char *) file andFunction: (const char *)func andLine: (int) line andFormat: (char *)format, ...;
#define LOG(lvl, format, args...)	\
	[[logger instance] logWithLevel: lvl andFile: __FILE__ andFunction: __FUNCTION__ \
	andLine: __LINE__ andFormat: format, ##args]

@end
